2017-02-24 1 views
1

저는 하스켈과 함께 기세를 가지기 시작했고, 내가 일상화 한 추상화를 좋아합니다 (예 : lens).API와 인터페이스하기위한 HTTP 렌즈?

나는 REST API 렌즈가 함께 사용하는 것이 유용 할 수 있지만 시간이 지나면 사용이 불가능하다는 것을 알고 있습니다.

내가 볼 수있는 주요 문제는 내가 직접 데이터 구조에 접근하지만, 요청 문자열을 출력 아니에요이다

는 (내 렌즈 구문은 아마도 잘못) : 그에서의 내가 있으리라 믿고있어

λ> over (user "robertplant") . set favoritesong 

POST http://...com/api/user/robertplant/favoritesong 
{ 
    ... 
} 

---- 

λ> over (user "robertplant") . view _1 

GET http://...com/api/user/robertplant/favoritesong/123 

적용 문제가 없거나 모나드가 필요할 수 있습니까?

은 내가 (아직도 나에게 약간 퍼지의 ... 어떤 의미에서) 렌즈 법칙을 만족하는이 렌즈를 상상할 수있는, 의미,하지만 난 렌즈 문자열을 넣어위한 하드웨어를 가지고 아직 보지 못했다/이와 같은 다른 데이터 구조.

이 여행을 할 가치가 있습니까?

+1

'wreq'를 확인 했습니까? – Sibi

답변

1

아니요, 렌즈와 관련이 없습니다. 불행히도. 렌즈는 lens laws

view l (set l v s) ≡ v 
set l (view l s) s ≡ s 
set l v' (set l v s) ≡ set l v' s 

그것은 당신이 당신이 찾고있는 출력을 생산하기 위해 하스켈에서 작성합니다 일부 영리한 일이있을 가능성이, 그것은 바로이 주제와 관련된되지 않습니다 만족 것들입니다.

+0

'view' ='GET','set' ='POST' 또는'PUT', 렌즈에 굉장히 비슷해 보입니다. 틀렸습니까? –

+0

렌즈를 단순한 저장 및 검색보다 일반적인 설정으로 생각하는 것처럼 보입니다. 렌즈는 특히 위의 법률 에서처럼 상호 작용하는 기능에 관한 것입니다. 이러한 법칙은 REST API와 상호 작용하는 것과 같은 일반적인 개념이 아니라 실제 함수 적용을 의미합니다. – glguy