2017-02-22 5 views
1

저는 POST를 통해 어떤 종류의 언어가 제공되었는지를 신경 네트워크에 묻는 매우 간단한 플라스크 API를 만들었습니다. GET을 통해컬링으로 플라스크에 REST API가 작동하지 않습니다.

요청

curl -H "Content-Type: application/json" -X POST -d "{"""text""":"""This should be recognized as an english text."""}""" http://<IP>:5000/api/v1.0/findlanguage 

API 호출은 브라우저 내에서 작업하고 있으며, 그들은 원하는 모든 JSON 객체를 반환합니다. Flask는 또한 서버 측에서 HTTP 코드 200으로 리턴 한 GET 요청이 있음을 응답합니다.

그러나 위의 POST 요청은 Flask의 출력을 유발하지 않습니다. 내가보기에 일종의 콘솔로 들어간다. 내가보기에 이것이 바로 이것이다 :

>_ 

그래, 맞아. 이것이 무엇일까요? 내가 놓친 게 있니?

예상 출력이 JSON 객체가 같이해야합니다

{ 
    'task': 'findlanguage', 
    'result': 'english', 
    'api': 'v1.0', 
    'call': 'http://<ip>:5000/api/v1.0/findlanguage' 
} 
+0

? 요청 본문을 다음과 같이 변경하십시오.''{ "text": "영어 텍스트로 인식되어야합니다."} '' – leovp

+0

술병의 출력이 있습니까? 포스트의 종류는 서버 측에서 사용 된 패턴이 더 많습니까? – dsgdfg

+0

이 튜토리얼에 따라이 튜토리얼을 구현했습니다. https://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask 여기에 리눅스에서 이러한 삼중 큰 따옴표가 필요하다고합니다. 환경. 이중 따옴표없이 서버를 사용하면 HTTP 오류 500 내부 서버 오류가 발생합니다. – Andre

답변

2

요청이 전혀 보내지고 있지 않습니다; curl을 실행하기 전에 쉘은 추가 입력을 기다리고 있습니다.

그러나 위의 POST 요청은 Flask의 출력을 유발하지 않습니다. 그것은이는 내가 모두가 볼 수 있기 때문에 내가 추측 콘솔의 어떤 종류를 입력 : 명령이 불균형 따옴표 문자가있는 경우 당신이 볼 수있는 내용

>_ 

. 예를 들어, 시도 : 당신이 프롬프트에서 다른 "을 입력하고 return 키를 누르면 경우, 명령이 실행됩니다

curl -H "Content-Type: application/json"" 

.

그 예일뿐입니다. 질문의 명령 예제의 문제는 Content-Type 문자열 주위의 따옴표로 인한 것이 아니고 대신 -d 옵션의 인수 때문입니다.

당신은 실제로 """ 세 줄의 이중 인용 부호를 사용하고 있습니까? 그렇다면 왜?

관계없이, 열기 { 중괄호 문자 앞에 한 개의 이중 인용 문자가 있고 닫음 } 중괄호 뒤에 세 개의 큰 따옴표 문자가 있는데 분명히 맞지 않습니다.

왜 그냥 단일 따옴표로 -d 인수를 넣지 마십시오 :

어쩌면이 모든 따옴표를의
-d '{"text":"This should be recognized as an english text."}' 
+0

좋아, 나는 방금 새로운 것을 배웠다. 고마워 :-) 그것은 결국 효과가 있었다. 서버 측에서 오류가 발생했습니다. 나는 항상 단일 인용 부호로 된 HTTP 500을 가지고있다. 파이썬은 코드 내의 오류에 대해 나에게 말해 줬다. 문제가 해결되었습니다 ... 가끔은 그냥 보지 못합니다. 다들 감사 해요! – Andre

관련 문제