apidoc
REST API ドキュメントの生成に使用し始めました。私はそれでさまざまなことを試しました。
私のflask
ベースのAPIアプリケーションではJWT
、認証に(特にflask-jwt)を使用しています。ドキュメントは正しく生成されますが、ドキュメントからのリクエストは正しく行われません。
これはdocsting
、ドキュメントを生成するために配置した場所です
def authenticate(username, password):
"""
@api {post} /auth Authentication url
@apiName Authentication
@apiGroup Login
@apiParam {String} username Username of the user
@apiParam {String} password Password of the user
@apiSuccess {String} access_code JWT
@apiSuccessExample Success Response
HTTP/1.1 200 OK
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGl0eSI6IjM5MDA4MGExLWY0ZjctMTFlNS04NTRkLTI4ZDI0NDQyZDNlNyIsImlhdCI6MTQ1OTE3ODE0NSwibmJmIjoxNDU5MTc4MTQ1LCJleHAiOjE0NTkxNzg0NDV9.nx_1a4RmvJ7Vlf1CvnMzqoTfzChcuJnDb1Tjy1_FnXw"
}
@apiErrorExample Invalid Credentials
{
"description": "Invalid credentials",
"error": "Bad Request",
"status_code": 401
}
"""
user = session.query(User).filter_by(username=username).first()
if user and user.is_correct_password(password):
return user
return False
ドキュメントを生成すると、適切に生成されます
$ apidoc -i onehop/ -o doc
- しかし、生成されたドキュメントから認証情報を渡すと、リクエストは失敗します。フラスコのリクエストで取得したリクエストデータは
''
(空)です Content-Type
docstring にヘッダーを含めた後でも失敗します。フラスコのリクエストで取得するリクエストデータはusername=test@example.com&password=test123
Flask-JWTのコードにデバッグポイントを入れることで上記を確認しました
def _default_auth_request_handler():
data = request.get_json() # My debug poing
username = data.get(current_app.config.get('JWT_AUTH_USERNAME_KEY'), None)
password = data.get(current_app.config.get('JWT_AUTH_PASSWORD_KEY'), None)
しかし、それを使用して同じリクエストを行うと、postman
適切に行われます。
私は何を取りこぼしたか?