Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[chore #18] : Swagger 세팅 #19

Merged
merged 5 commits into from
Aug 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ dependencies {
//spring bean validation
implementation 'org.springframework.boot:spring-boot-starter-validation'

//swagger
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0'
}

tasks.named('test') {
Expand Down
56 changes: 56 additions & 0 deletions src/main/java/com/dnd/gongmuin/common/config/SwaggerConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package com.dnd.gongmuin.common.config;

import java.util.List;

import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;

import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Info;
import io.swagger.v3.oas.annotations.servers.Server;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;

@OpenAPIDefinition(
info = @Info(
title = "GongmuIn API",
description = "공무인 API 명세서",
version = "v.1.0"),
servers = {
@Server(url = "https://gongmuin.site", description = "Deploy Server URL"),
@Server(url = "http://localhost:8080", description = "Local Host URL")
}
)
@Configuration
public class SwaggerConfig {

@Bean
public OpenAPI openAPI() {
SecurityScheme securityScheme = new SecurityScheme()
.type(SecurityScheme.Type.HTTP)
.scheme("bearer")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"bearer"로 하셔도 잘 되셨나요?
만약 인증이 안되거나 확인이 안되신다면 "Bearer "로 수정 부탁드려요!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

블로그 참고하면 bear로 나와있어서요..!
지금 토큰이 없어 확인해볼 수 없으니, 일단 pr merge하고 문제 생길 시 수정하겠습니다~

.bearerFormat("JWT")
.in(SecurityScheme.In.HEADER)
.name(HttpHeaders.AUTHORIZATION);
SecurityRequirement securityRequirement
= new SecurityRequirement().addList(HttpHeaders.AUTHORIZATION);

return new OpenAPI()
.components(new Components().addSecuritySchemes(HttpHeaders.AUTHORIZATION, securityScheme))
.security(List.of(securityRequirement));
}

@Bean
public GroupedOpenApi chatOpenApi() {
String[] paths = {"/api/**"};

return GroupedOpenApi.builder()
.group("API v.1.0")
.pathsToMatch(paths)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,12 @@
import com.dnd.gongmuin.question_post.dto.RegisterQuestionPostRequest;
import com.dnd.gongmuin.question_post.service.QuestionPostService;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;

@Tag(name = "질문글 API")
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/question-posts")
Expand All @@ -24,6 +28,8 @@ public class QuestionPostController {
private final QuestionPostService questionPostService;

@PostMapping
@Operation(summary = "질문글 등록 API", description = "질문글을 등록한다")
@ApiResponse(useReturnTypeSchema = true)
public ResponseEntity<QuestionPostDetailResponse> registerQuestionPost(
@RequestBody RegisterQuestionPostRequest request,
@AuthenticationPrincipal Member member
Expand All @@ -33,6 +39,8 @@ public ResponseEntity<QuestionPostDetailResponse> registerQuestionPost(
}

@GetMapping("/{questionPostId}")
@Operation(summary = "질문글 상세 조회 API", description = "질문글을 아이디로 상세조회한다.")
@ApiResponse(useReturnTypeSchema = true)
public ResponseEntity<QuestionPostDetailResponse> getQuestionPostById(
@PathVariable("questionPostId") Long questionPostId
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
.authorizeHttpRequests(
(auth) -> auth
.requestMatchers("/").permitAll()
.requestMatchers("/api/**").permitAll()
.requestMatchers("/swagger-ui/**", "/v3/api-docs/**").permitAll()
.requestMatchers("/api/auth/signin/kakao").permitAll()
.requestMatchers("/api/auth/member").permitAll()
.requestMatchers("/api/auth/check-email").permitAll()
Expand Down
Loading