1

apidocREST 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
  1. しかし、生成されたドキュメントから認証情報を渡すと、リクエストは失敗します。フラスコのリクエストで取得したリクエストデータは''(空)です
  2. Content-Typedocstring にヘッダーを含めた後でも失敗します。フラスコのリクエストで取得するリクエストデータは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適切に行われます。

郵便配達員のヘッダー ここに画像の説明を入力

APIDoc ヘッダー ここに画像の説明を入力

私は何を取りこぼしたか?

4

0 に答える 0