Используйте те же представления REST с использованием Graphaware Neo4j Framework, что и те, которые мы получаем от Neo4j REST API.

Я разрабатываю расширение сервера Neo4j, используя платформу Neo4j Framework, предоставленную Graphaware.

Я хочу в своем ответе отправить следующий объект (упрощенный, чтобы вы могли видеть атрибуты):

public class DiffResult {
    private Node fileOrFolder;
    private Node originalContent;
    private Path path;
}

Проблема в том, что объект Node не может быть отрендерен Джексоном. Я где-то видел класс NodeRepresentation, но я также не знаю, как правильно его использовать с моим контроллером Spring MVC.

Я хочу, чтобы мои узлы были сериализованы, как в Neo4j REST Api (см. документацию: http://neo4j.com/docs/stable/rest-api-nodes.html#rest-api-get-node)

Я также покажу вам контроллер, который я использую (тоже упрощенный).

@Controller
@RequestMapping("/diff")
public class FileSpaceDiffApi {

    private final GraphDatabaseService database;

    @Autowired
    public FileSpaceDiffApi(GraphDatabaseService database) {
        this.database = database;
    }

    @RequestMapping(method = RequestMethod.GET)
    @ResponseBody
    public List<DiffResult> diff(@QueryParam("fileSpaceId") Long fileSpaceId, @QueryParam("since") Long since) {
        List<DiffResult> results = new ArrayList<DiffResult>();
        Transaction tx = database.beginTx();
        try {
            Node startNode = database.getNodeById(fileSpaceId);
            DiffResult diffResult = new DiffResult();
            diffResult.setFileOrFolder(startNode);
            results.add(diffResult);
            tx.success();
        }
        finally {
            tx.close();
        }
        return results;
    }

}

В идеале я также хотел бы иметь возможность отображать путь в JSON.


person Leward    schedule 05.12.2014    source источник


Ответы (1)


Нет (пока) возможности легко возвращать узлы в том же формате, что и Neo4j. В основном это связано с тем, что Neo4j REST API очень общий и, следовательно, слишком многословный и многословный для многих вариантов использования.

Я бы посоветовал взглянуть на com.graphaware.api.JsonNode, которому вы можете передать узел Neo4j, и некоторую конфигурацию того, что будет присутствовать в сгенерированном JSON (например, включать ли метки и т. д.)

Вы можете использовать его, добавив в свой pom.xml следующее:

 <dependency>
    <groupId>com.graphaware.neo4j</groupId>
    <artifactId>api</artifactId>
    <version>${graphaware.version}</version>
 </dependency>

Что касается путей, в neo4j-algorithms есть класс JsonPath, который поможет вам достичь того, что ты хочешь. Мы с радостью перейдем к основному фреймворку для следующего релиза (именно там он и должен быть).

person Michal Bachman    schedule 05.12.2014