簡體   English   中英

Dropwizard + Raml - >空資源

[英]Dropwizard + Raml -> empty resource

當我啟動服務器時,會出現一條警告,指出我的資源是空的(導致404):

WARN  org.glassfish.jersey.internal.Errors - The following warnings have been detected: WARNING: A resource, Resource{"helloz", 0 child resources, 0 resource methods, 0 sub-resource locator, 0 method handler classes, 0 method handler instances}, with path "helloz" is empty. It has no resource (or sub resource) methods neither sub resource locators defined.

腎錯構瘤:

#%RAML 0.8
---
title: API
version: 0.1
mediaType: application/json
baseUri: "{apiRoot}/api"
baseUriParameters:
    apiRoot:
        description: Set the root of the service here
        example: http://localhost:9090
schemas:
   - common: !include common-schema.json
   - hello-schema: |
            {  "$schema": "http://json-schama.org/draft-03/schema",
               "type": "object",
               "description": "A Hello World Schema",
               "properties": {
                   "times": { "type": "number"}
               }
            }
   - meta-error: |
         {  "$schema": "http://json-schama.org/draft-03/schema",
            "type": "object",
            "description": "A generic error response for the API",
            "properties": {
                "message": { "type": "string" },
                "details": { "type": "array",
                             "items": { "type": "string" }
                           }
            }
         }
traits:
  - secured:
      usage: Apply this to any method that needs to be secured
      description: Some requests require authentication.
      queryParameters:
        access_token:
          description: Access Token
          type: string
          example: ACCESS_TOKEN
         # required: true

/helloz:
    is: [ secured ]
    post:
        description: Just say hello
        body:
            application/json:
                schema: hello-schema
                example: !include examples/empty.json
        responses:
             200:
                 body:
                    application/json:
                        schema: hello-schema
             400:
                 description: A malformed input message
                 body:
                    application/json:
                        schema: meta-error

執行:

public class SayHello implements Helloz {

    @Override
    public PostHellozResponse postHelloz(@QueryParam("access_token") String accessToken, HelloSchema entity) throws Exception {
        System.out.println("Hello World!");
        return PostHellozResponse.withJsonOK(null);
    }
}

在Application#run中,我只需執行以下操作: environment.jersey().register(SayHello.class);

好的,這並不明顯 - 您需要刪除實現類中的注釋:

錯誤

public class SayHello implements Helloz {

    @Override
    public PostHellozResponse postHelloz(@QueryParam("access_token") String accessToken, HelloSchema entity) throws Exception {
        System.out.println("Hello World!");
        return PostHellozResponse.withJsonOK(null);
    }
}

正確:

public class SayHello implements Helloz {

    @Override
    public PostHellozResponse postHelloz(String accessToken, HelloSchema entity) throws Exception {
        System.out.println("Hello World!");
        return PostHellozResponse.withJsonOK(null);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM