[S2GRAPH-248] I made the first commit for the issue.

Link: https://github.com/daewon/incubator-s2graph/tree/S2GRAPH-248/s2http

I chose `akka http` because it was stable and lightweight with the`
framework` for `http layer`.
The initial implementation focused on minimizing external dependencies and
allowing the separate logically separate functions `write, read, admin,
graphql`.

To do this, I chose to define logically separated `route` functions as each
`Trait` S2GraphAdminRoute | S2GraphTraversalRoute. (Please comment if you
have any opinions)

An example implementation of functionality is `getEdges, experiments`, etc.
in` S2GraphTraversalRoute`.

The `/graphs/*` APIs are implemented to be branched from the existing
restHandler.
Implement it first by delegating that function.

```
// expose routes in `S2GraphTraversalRoute` Trait
lazy val traversalRoute: Route =
  post {
    concat(
      delegated // getEdges, experiments, etc.
    )
  }
```

An example implementation of functionality is `get / create Label /
Service` in `S2GraphAdminRoute`.

```
// expose routes in `S2GraphAdminRoute` Trait
lazy val adminRoute: Route =
  get {
    concat(
      getService,
      getLabel
    )
  } ~ post {
    concat(
      createService,
      createLabel
    )
  }
```

There is a brief description in README.md about running the server and
testing its functionality.

I think the rest of the functions will be created by creating each issue.

@DOYUNG `https://issues.apache.org/jira/browse/S2GRAPH-249` It seems to be
related to the issue.


2018년 11월 23일 (금) 오후 2:18, Daewon Jeong (JIRA) <j...@apache.org>님이 작성:

>
>     [
> https://issues.apache.org/jira/browse/S2GRAPH-248?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16696384#comment-16696384
> ]
>
> Daewon Jeong commented on S2GRAPH-248:
> --------------------------------------
>
> [~steamshon] Thank you for your feedback.
>
> I will quickly build a basic project that will be the base for HTTP
> integration task.
>
> > HTTP interface integration.
> > ---------------------------
> >
> >                 Key: S2GRAPH-248
> >                 URL: https://issues.apache.org/jira/browse/S2GRAPH-248
> >             Project: S2Graph
> >          Issue Type: Task
> >          Components: s2core, s2rest_netty, s2rest_play
> >            Reporter: Daewon Jeong
> >            Priority: Minor
> >
> > The current HTTP interface in S2Graph has the following problems.
> >  known issues:
> >    1. The `s2rest_netty` project is experimental and supports only
> `graph traverse` API.
> >    2. `s2rest_play` based on Play! Framework.
> >       - Play! Framework is full stack framework, so it has a lot of
> dependencies that s2graph does not need.
> >       - There is also a conflict with byte buddy for patching asynchbase.
> >    3. `GraphQL` is still in the experimental phase and does not yet
> provide all the functionality.
> > The discussion below is written on the link below.
> > discussions: [
> https://lists.apache.org/thread.html/56379268a12ed5e64a2d7497a8741b09cdf2194bf7a3c303000420b6@%3Cdev.s2graph.apache.org%3E
> ]
> >
> > Based on this issue, the following work should be done.
> >  * Create an HTTP interface project(without play!)
> >  * Remove s2rest_netty
> >  * API documentation (GraphQL, Rest)
> >  * GraphQL and Rest HTTP interface integration
>
>
>
> --
> This message was sent by Atlassian JIRA
> (v7.6.3#76005)
>

Reply via email to