[ 
https://issues.apache.org/jira/browse/METRON-503?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15801365#comment-15801365
 ] 

ASF GitHub Bot commented on METRON-503:
---------------------------------------

Github user jjmeyer0 commented on the issue:

    https://github.com/apache/incubator-metron/pull/316
  
    
    **Project Structure:**
    
    Personally I think the module, `metron-interface`, should be split up into 
more modules. I think there should be `metron-rest` and `metron-rest-client`. 
The idea would be to move the models into the client module. Specifically the 
models returned by the endpoints and are used when making requests. I 
personally like to to do this because it allows a user to use the client 
without having to bring a ton of dependencies onto their classpath. This is 
assuming there will eventually be a client module. Does this make sense? Think 
it is worth doing now?
    
    **Response Behavior:**
    
    I think we should also decide how Metron's APIs handle errors. In the past 
I have defined an error response type that was used by all endpoints. It could 
potentially look something like:
    
    {
      "responseCode" : 404, 
      "message" : "Could not find parser config.", 
      'fullMessage" : "Could not find parser config with the name: [some name]"
    }
    
    Also, I personally do not like to throw exceptions of type `Exception`. I 
think we could do a couple things. We could create a MetronRestException that 
gets mapped to an error response. We could also have the service layer use an 
`Either` type which would either return the response entity or a set of error 
responses. Do you all think this is worth talking about now? I think this is 
always one of those things that's tough to decide, but should be standard 
across the API.
    
    **API Documentation:**
    
    I think it is worth documenting all the different response types for each 
endpoint. For example, the endpoint `/api/v1/sensorParserConfigHistory` only 
describes the response for a 200 code, but there is also a 404. This can be 
done by using Swagger's `ApiResponses` annotation.
    
    **API Structure:**
    
    As for API structure there were a few that I thought could potentially be 
changed. Below are a few examples. To me it may make sense at some point to 
have a sensor endpoint. IMO breaking it up as I did below groups them a bit 
more nicely (isn't an exhaustive list). What do you think? 
    
    /api/v1/globalConfig -> /api/v1/global/config
    /api/v1/sensorEnrichmentConfig -> /api/v1/sensor/enrichment/config
    /api/v1/sensorParserConfig -> /api/v1/sensor/parser/config
    /api/v1/sensorParserConfigHistory -> /api/v1/sensor/parser/config/history



> Metron REST API
> ---------------
>
>                 Key: METRON-503
>                 URL: https://issues.apache.org/jira/browse/METRON-503
>             Project: Metron
>          Issue Type: New Feature
>            Reporter: Ryan Merriman
>            Assignee: Ryan Merriman
>         Attachments: Metron REST API.docx
>
>
> As discussed on the dev list ([DISCUSS] Metron REST API Requirements), this 
> Jira includes adding a REST API to Metron.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to