뚜벅이!
Mobile :)
뚜벅이!
전체 방문자
오늘
어제
  • 분류 전체보기 (52)
    • 코딩테스트 (16)
      • programmers level1 (7)
      • codility (9)
    • 프로그래밍 공부 (31)
      • Spring Boot (6)
      • Nuxt.js (5)
      • Node.js (3)
      • Etc (11)
      • Android (6)
    • 잡다한 글 (3)
    • 토이프로젝트 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • javascript
  • Vue
  • 스킬체크테스트
  • 부트
  • lesson4
  • docker
  • 초보자
  • nuxt
  • ad
  • nuxt.js
  • AndroidX
  • Kotlin
  • 프로그래머스
  • lesson3
  • Jetpack
  • 연습
  • Spring
  • Notification
  • lesson2
  • firebase
  • JS
  • level1
  • NavBar
  • token
  • node.js
  • Spring boot
  • codillity
  • programmers
  • node
  • Vue.js

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
뚜벅이!

Mobile :)

Rest API - Swagger 사용하기
프로그래밍 공부/Etc

Rest API - Swagger 사용하기

2019. 6. 27. 11:21
728x90

2019/06/20 - [프로그래밍 공부] - [Nuxt.js + Spring Boot] simple example

 

[Nuxt.js + Spring Boot] simple example

스프링 부트 +lombok +jpa +h2 +web starter +rest repository lombok실행시켜서 sts에 설치 안하고 의존성만 추가하면 bean error PostController.java @RestController public class PersonController { priva..

ttubeoki.tistory.com

 

 

Swagger는 Rest API를 눈으로 보기 쉽게 그려주는 역할을 하고 있다. 고로, 이전에 포스팅한 RestAPI를 활용한 프로젝트 예제를 가지고 테스트 해보려고한다.

 

 

우선 pom.xml에 Dependency를 설정해 주어 사용할 수 있는 환경을 구성한다

(참고로 두개의 버전이 다르면 에러가 난다는 stackoverflow의 내용이 많으니 버전은 동일하게 해주자)

	
	<dependency>
		<groupId>io.springfox</groupId>
		<artifactId>springfox-swagger2</artifactId>
		<version>2.6.1</version>
	</dependency>
	<dependency>
		<groupId>io.springfox</groupId>
		<artifactId>springfox-swagger-ui</artifactId>
		<version>2.6.1</version>
	</dependency>

 

 

 

 

 

그다음, Controller에 annotation을 추가한다.


	@GetMapping("/post")
	@ApiOperation(value="사용자 정보 조회", notes="사용자 정보를 조회")
	public List goodPersons(){
		return personRepository.findAll();
	}
	
	@PostMapping("/post")
	@ApiOperation(value="사용자 정보 저장", notes="사용자 정보를 저장합니다")
	public void registration(@ModelAttribute("personForm") Post postForm) {
		System.out.println(postForm);
		personService.savePost(postForm);
	}
	

@ApiOperation Get,Post 방식 등 url 요청을 읽어드리는 부분에 작성하면 된다.

 

 

 

 

 

 


@SpringBootApplication
@EnableSwagger2
public class BackendApplication {

	public static void main(String[] args) {
		SpringApplication.run(BackendApplication.class, args);
	}

	@Bean
	public Docket api(){
		return new Docket(DocumentationType.SWAGGER_2)
				.select()
				.apis(RequestHandlerSelectors.any())
				.paths(PathSelectors.ant("/**"))
				.build();
	}

}

그리고 BootApplication에 @EnableSwagger2 를 붙여 Swagger를 이용할수 있게끔 하자 ( 안붙이면 404에러 )

@Bean으로 Docket을 설정하여, 어떠한 paths, apis 등 설정이 가능한데, 현재 설정한 것은

어느 요청이든지 캐치하겠다 라는 것이다. 만약 원하는 Controller만 보고싶다면,

Controller 에 @RequestMapping("/resource") 이런 형식으로 어노테이션을 붙여놓고

paths에서 ("/**") 이 아닌, ("/resource/**") 이런식으로 붙여줘야  지정이 가능하다.

 

 

 

 

 

 

마지막으로 JPA 부분에 ( domain, entity, model 등 )


@Data
@NoArgsConstructor
@Entity
@ApiModel
public class Post {
	public Post(String title) {
		this.title = title;
	}
	
	@Id
	@GeneratedValue
	@ApiModelProperty(value="아이디")
	private Long id;
	
	@ApiModelProperty(required = true, value="제목")
	private String title;
	
	@ApiModelProperty(required = true, value="내용")
	private String content;
}

@ApiModel, @ApiModelProperty를 설정해주자.

여기서 ID는 @GeneratedValue가 붙어있기 때문에 autoIncrease가 되므로 required = true가 따로 필요가 없다

( required = true 로 해두면 꼭 값을 받아야지만 실행이 된다. )

 

 

 

 

그 후에 Nuxt.js + Boot 를 실행시킨후 http://localhost:8080/swagger-ui.html 에 들어가면,

 

Swagger사용

RestAPI를 관리할 수 있는 화면이 나온다

여기서 person-controller에 어노테이션을 붙여놨으므로 들어가 보면,

Swagger사용

controller의 세부 내용이 보이게 된다. get은 회원읽기용, post는

저장용이니 저장용으로 일단 데이터를 집어넣어 보자

 

Swagger사용

값을 입력하고, Try it out! 버튼을 누르면

 

 

 

Swagger사용

Response Code 200 (정상작동)과 함께 Boot console에도 데이터가 들어온것이 확인된다.

 

Swagger사용

이제, 방금 넣은 데이터를 확인해보자. GET 방식으로 들어가서, Try it out! 버튼을 누르면

 

Swagger사용

방금 집어넣은 데이터가 제대로 표시가 된다

728x90
저작자표시 (새창열림)

'프로그래밍 공부 > Etc' 카테고리의 다른 글

[Vault] KMS  (0) 2021.11.04
audio tag에서 seekbar가 작동하지 않을때  (0) 2021.09.17
java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter  (0) 2021.03.10
[메모] activity launchMode 삽질  (0) 2020.10.05
[Docker] boot를 Docker로 실행해보자  (0) 2019.06.27
    '프로그래밍 공부/Etc' 카테고리의 다른 글
    • audio tag에서 seekbar가 작동하지 않을때
    • java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
    • [메모] activity launchMode 삽질
    • [Docker] boot를 Docker로 실행해보자
    뚜벅이!
    뚜벅이!
    2022. 4년차 안드로이드 개발자 wndnjs19@gmail.com

    티스토리툴바