예시
서비스 기능 method URI request_DATA response_DATA
게시판(article)저장 POST /articles JSON NONE
수정 UPDATE /articles JSON NONE
삭제 DELETE /articles NONE NONE
목록 GET /articles NONE JSON
교차 출러 리소스 공유
Cross-Origin Resource Sharing의 약자
추가 http 헤더를 사용하여, 접근 권한을 부여하도록 브라우저에 알려주는 체제입니다.
보안 상의 이유로, 브라우저는 스크립트에서 시작한 교차 출처 http 요청을 제한합니다.
@RestController
@RequestMapping("/articles")
@CrossOrigin("*")
public class ArticleRestController {
@GetMapping("/article/{id}")
@ApiOperation(value = "{id}에 해당하는 기사 정보를 반환한다.", response = Article.class)
public ResponseEntity<?> select(@PathVariable String id) {
try {
Article artcle = service.select(id);
if (artcle != null)
return new ResponseEntity<Article>(artcle, HttpStatus.OK);
else
return new ResponseEntity<Void>(HttpStatus.NO_CONTENT);
} catch (SQLException e) {
return new ResponseEntity<Void>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@GetMapping("/article")
@ApiOperation(value = "query string에 해당하는 검색 조건에 해당하는 기사 목록을 반환한다.", response = Article.class)
public ResponseEntity<?> search(@RequestBody SearchCondition condition) {
try {
List<Article> articles = service.search(condition);
if (articles != null && !articles.isEmpty())
return new ResponseEntity<List<Article>>(articles, HttpStatus.OK);
else
return new ResponseEntity<Void>(HttpStatus.NO_CONTENT);
} catch (SQLException e) {
return new ResponseEntity<Void>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
}
https:/blahblah/context-path/articles/article 로 받아올 수 있다.
ResponseEntity<?>로 반환하면 자동으로 json으로 변환하여 전송한다.
ResponseEntity<?> 반환
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-databind-version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>${json-version}</version>
</dependency>
session 등록을 하면 안된다(stateless 로 구현. 즉, 토큰을 전달해야 한다.)
자세해서 좋아요~~