Intellij Idea – http api 테스트

intellij idea에서 자체적으로 http client를 제공하는데
*.http 파일에 설정해놓고 사용 가능하다.
postman도 공유 export 등등 다 가능하지만 소스코드에 넣어놓고 프로젝트별로 공유할 때는 이게 좀 더 편하다.

특히 API 만들때

남의 API 쓸 때 : Postman

사용법

예제보기

Tools – HttpClient – Open HTTP Requests Collection

파일생성

오른쪽클릭 – New – Http Request

Hateoas – 왜 쓰는거지

개요

rest api 사용할 때 관련있는 api의 목록을 제공한다는 컨셉

참고 :
https://spring.io/understanding/HATEOAS
https://en.wikipedia.org/wiki/HATEOAS

그런데… 근본적으로 이해가 안간다.
보통 뭔가 기술적으로 정립된것들을 보면 나도 필요하다고 생각했던 경우가 많은데
이건 왜 스는건가 의아하다
이건 도큐먼트 아닌가
기계가 알아봐야하는 도큐먼트
generated doc의 일종이 되어야 할 것 같다.
/rest/api/user
/rest/doc/user
와 같은 관계가 되야하지 않을까

일단 비관적이고
뭔소린지는 알겠는데 공감이 가지 않는다.
안쓰겠다.

RPC vs RESTful API

개요

약간 고민하게 되는데 생각보다 간단한 결론은

RPC는 내부 프로토콜로 사용 – 인프라 내부가 아닌 내부 서비스간의 통신.
APP의 API로도 사용가능.

REST API는 외부공개용.

끝.

요약

RPC

내부 서비스간 통신

RESTful

외부 공개용

ex)ample

ModileApp은 외부에 있지만 내부 서비스이다. API와 RPC통신
외주사가 회사 내부망에 설치한 GIS솔루션은 내부 서비스가 아니다. RESTful 방식사용

Java Web, Spring Restful 웹서비스를 위한 web.xml 필수 설정

<!-- HTTP Method Filter -->
<filter>
    <filter-name>httpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>httpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

바로 이거….

현재의 웹브라우저는 Http protocol의 post, get 두 가지 방식밖에 인식을 하지 못한다. 그래서 프로그래밍적으로 처리를 해 주는 경우가 대부분이다. 보통 jquery의 ajax 함수를 이용한 방법을 많이 쓰는것으로 알고 있다.

 

<form method=”post” action=”/join”>

<input type=”hidden” name=”_method” value=”put”/>

</form>

이런식으로 전송을 한다.

그러면 위의 필터가 이를 편집해준다.

 

못믿겠으면 직접 소스를 보시라능..

 

이것만 딱 써놓으면 한글이 깨진다.

<!-- Filters -->
<filter>
	<filter-name>encodingFilter</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	<init-param>
	<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>encodingFilter</filter-name>
	<url-pattern>/*</url-pattern>
	<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<!-- HTTP Method Filter -->
<filter>
	<filter-name>httpMethodFilter</filter-name>
	<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>httpMethodFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

이렇게 두개를 같이 써주면 한글이 안깨진다고 한다.

한글이 깨져서 이 필터 빼버린적은 있는데… 이렇게 하면 안깨지는지 아직 확인은 안해봤다.

 

둘다 단순한 기능을 하는 필터다. 캐릭터 인코딩 필터는 그냥 post로 전송된 내용을 인코딩해주는 필터고 rest filter는 http헤더의 메서드를 인식해서 변경해주거나
name=”_method” value=”post|get|put|delete…등”을 확인하고 http 헤더의 메서드를 변경해주는 역할을 한다.