'2017/05/02'에 해당되는 글 2건

  1. 2017.05.02 RFC7807 과 problem+json
  2. 2017.05.02 reactive streams, frp

RFC7807 과 problem+json

분류없음 2017.05.02 13:28 posted by dev.bistro


https://tools.ietf.org/html/rfc7807


기본적인 HTTP의 응답메시지에 들어있는 데이터로는 기본적인 내용만 파악가능할 뿐, 상세한 내용은 없다. 

관련한 스펙이다. 본문에서도 나와있는 것처럼 고객의 계좌에 충분한 잔고가 없을 경우의 응답은 403 Forbidden Code를 줄수 있을 것이다. 하지만 이것으로는 왜 금지된것인지, 해결방법은 무엇인지는 전적으로 클라이언트 코드에서 알아서 해야한다. 이를 위해 이 7807 스펙을 적용할 수 있을 것이다.


미디어 유형은 application/problem+json 이고, application/json 과 호환이 된다.


java의 구현체로는 링크 를 사용하면 되고, 스프링과의 사용은  problem-spring-web 을 추가하면 된다.


@GetMapping(value = "/{id}", produces =  APPLICATION_JSON_VALUE  )
    public ResponseEntity getProduct(@PathVariable  String id) {
        Account account = accountRepository.get(id);
        if (account == null || !account.enoughBalence() ){
            throw Problem.builder()
                         .withType(URI.create("https://example.org/order-failed"))
                         .withTitle("Order failed")
                         .withStatus(BAD_REQUEST)
                         .withCause(Problem.builder()
                                           .withType(URI.create("about:blank"))
                                           .withTitle("Out of Stock")
                                           .withStatus(BAD_REQUEST)
                                           .build())
                         .build();
        }
        ...
    }


서비스에서는 쓸 일이 없겠지만 stacktrace깢 보고자 할때는  둘 중 하나의 방법으로 셋팅을 하면 된다. https://github.com/zalando/problem-spring-web#stack-traces-and-causal-chains


신고

reactive streams, frp

분류없음 2017.05.02 10:48 posted by dev.bistro


쓰고는 있는것 같지만... 제대로 쓰고 있는지 제대로 알고 있는지 항상 아리송한 것들?

정답은 아니고... 그냥 다시 한번 훑어보는 정도

(밑의 내용들이 다 맞는지도 모르겠다, 그리고 보고나서도 새로운걸 많이 본것 보다는 여전히 아리송하다는거 ㅎ)



Reactive Streams

- asynchronous stream processing with non-blocking back pressure 를 위한 표준 스펙

- 2013년 경부터 넷플릭스, 피보탈, 트위터, 타입세이프등이 모여서 논의를 했고 시작은 akka, play 팀이다. (역시!) [2][3]

- 이 구현체로 JDK9, RxJava2, 스프링-리액터 등이 있다.

- RxJava는 이 스펙의 등장으로 인해서 1 -> 2 메이저 버전올라갈때 완전히 재작성 되었다. [4]


리액티브 프로그래밍 Vs 리액티브 시스템, FRP [5]

- 리액티브 시스템은 여러 독립 프로그램이 통합되어 유기적인 결합은 하는 아키텍쳐 스타일

- 리액티브 프로그래밍 : 하나의 어플리케이션에 리액티브 스타일의 프로그래밍을 할 수 있다 (퍼즐의 하나로 표현한다)

- FRP : 최근들어 잘못 사용되는 경우가 많다. 정확한 정의는 [6] , [7]도 참고


[1] https://en.wikipedia.org/wiki/Reactive_Streams#cite_note-16

[2] https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.0/README.md#specification

[3] 오라클 문서 JDK9의 리액티브-스트림을 구현하는 표준 Flow API : https://community.oracle.com/docs/DOC-1006738

[4] http://realignist.me/code/2017/01/25/rxjava2-changelog.html

[5] https://www.hanbit.co.kr/network/category/category_view.html?cms_code=CMS6076376207

[6] http://conal.net/papers/icfp97/

[7] http://www.enshahar.me/2014/07/frp.html


zuul/erueka 기반으로 cf 

신고


티스토리 툴바