버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

...

HTTP Method용도Spring Annotation기타
WebREST
GET정보를 가져올 때@Get@GetMappingURL을 통해 파라미터 형식으로 전달
POST정보를 변경할때전체를 변경할 때@Post@PostMappingHTTP Request Body에 변경할 내용을 포함해서 서버로 전달
PUT정보를 신규로 저장할 때@Put@PutMappingHTTP Request Body에 신규로 저장할 내용을 포함해서 서버로 전달
DELETE정보를 삭제할때@Delete@DeleteMappingURL을 통해 파라미터 형식으로 전달
PATCH정보를 부분 변경할 때@Patch@PatchMappingHTTP Request Body에 변경할 내용을 포함해서 서버로 전달
  • REST 이전에는 POST 방식으로 데이터를 변경(신규 추가, 변경, 삭제)하는 작업을 수행함
  • PUT, DELETE는 REST 이전에 보안 위배로 등록되어 활용할 수 없었으며 현재도 막는 기업들이 있음

...

코드 블럭
languagejava
linenumberstrue
@GetMapping("/{id}")
public ResponseEntity<?> getBazz(@PathVariable String id){
    return new ResponseEntity<>(new Bazz(id, "Bazz"+id), HttpStatus.OK);
}
 
@PostMapping
public ResponseEntity<?> newBazz(@RequestParam("name") String name){
    return new ResponseEntity<>(new Bazz("5", name), HttpStatus.OK);
}
 
@PutMapping("/{id}")
public ResponseEntity<?> updateBazz(@PathVariable String id, @RequestParam("name") String name) {
    return new ResponseEntity<>(new Bazz(id, name), HttpStatus.OK);
}
 
@DeleteMapping("/{id}")
public ResponseEntity<?> deleteBazz(@PathVariable String id){
    return new ResponseEntity<>(new Bazz(id), HttpStatus.OK);
}

URI 규칙

규칙설명
슬래시 구분자(/)는 계층 관계를 나타내는 데 사용한다

http://api.canvas.restapi.org/shapes/polygons/quadrilaterals/squares

  • /를 통해서 리소스간 계층 관계를 표현함
URI 마지막 문자로 슬래시(/)를 포함하지 않는다

http://api.canvas.restapi.org/shapes

http://api.canvas.restapi.org/shapes/

하이픈(-)은 URI 가독성을 높이는 데 사용한다

http://api.example.restapi.org/blogs/mark-masse/entries/this-is-my-first-post

  • URI를 쉽게 읽고 해석하기 위해서 긴 URI 경로에 하이픈을 사용해서 가독성을 높일 수 있음
  • URI에서는 문장 내 공백을 하이픈으로 변경할 수 있음
밑줄(_)은 URI에 사용하지 않는다
  • 편집기 등에서 URI는 클릭이 가능한 Link 형태로 표시하여 _
URI경로에는 소문자가 적합하다
파일 확장자는 URI에 포함시키지 않는다
API에 있어서 서브 도메인은 일관성 있게 사용해야 한다
클라이언트 개발자 포탈 서브 도메인 이름은 일관성 있게 만들어야 한다






http://hungry-developer.blogspot.com/2014/06/rest-api.html

GET Method에서 파라미터 처리

파라미터 종류URL 형식Spring Annotation예시
Request Parameter/login?index=1&page=2@RequestParam


코드 블럭
languagejava
linenumberstrue
@GetMapping("login")
public ModelAndView login(@RequestParam("index") int index, 
                                   @RequestParam("page") int page) {
  //...    
}


Path Variable/index/1@PathVariable


코드 블럭
languagejava
linenumberstrue
@PostMapping("index/{idx}")
@ResponseBody
public ModelAndView index(@PathVariable("idx") int index) {
  //...
}


Request Body의 형식

형식유형설명
텍스트

JSON

REST 방식의 출현, AJAX의 출현을 JSON 형식이 현재 가장 대세

과거 JSON은 UI에서 사용하던 기술이나 이제는 Server 간 데이터 송수신에서도 JSON을 사용

XML

과거 XML은 이기종 시스템(Server)간 데이터 송수신시 가장 완벽한 포맷으로 사용

XSD 등의 스키마를 통해 데이터의 구조 및 유효성이 보장

XML은 파싱에 과도한 비용이 소요되고 무겁다는 인식으로 최근은 사용하지 않음

PLAIN

JSON, XML도 엄밀하게 따져보면 PLAIN TEXT

어떤 것이든 PLAIN TEXT로 내용을 담을 수 있음

바이너리IMAGE

이미지 파일을 송수신할 때 Request & Response Body에는 이미지 바이너리 데이터가 포함

파일의 포맷은 HTTP Header를 통해서 전달되며 웹 브라우저는 헤더를 보고 어떤 포맷인지를 확인한 후 바이너리를 로딩하여 처리

기타 미디어

MP4 등도 Request & Response Body에 포함이 가능하며 HTTP Header를 보고 결정

웹 브라우저인 경우 HTTP Header를 보고 알아서 동작함

웹 브라우저가 아닌 경우 개발자가 알아서 처리함

...