简体   繁体   English

Dropwizard + Raml - >空资源

[英]Dropwizard + Raml -> empty resource

When I start the server there is a warning which says that my resource is empty (which results in a 404): 当我启动服务器时,会出现一条警告,指出我的资源是空的(导致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: 肾错构瘤:

#%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

Implementation: 执行:

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);
    }
}

And in the Application#run I just do the following: environment.jersey().register(SayHello.class); 在Application#run中,我只需执行以下操作: environment.jersey().register(SayHello.class);

Ok, that was not obvious - you need to remove the annotations in the implementing class: 好的,这并不明显 - 您需要删除实现类中的注释:

WRONG 错误

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);
    }
}

Correct: 正确:

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