如何在Meteor中创建Rest API

时间:2014-07-16 04:18:56

标签: api rest meteor

如何使用meteor设计/编写高效的rest API,移动应用程序也可以使用它?移动应用程序是否也可以利用流星反应式编程?

目前有这么多的编程选择,重复不同平台的所有内容(代码,api)似乎很浪费,而不是有一个很好的实际解决方案。

3 个答案:

答案 0 :(得分:4)

你的帖子实际上是两个不同的问题。

  1. 是的,有一种方法可以将REST端点连接到Meteor。您只需使用connect或Express将它们编写为普通的Node.js代码,然后在提取WebApp.connectHandlers包(webapp)后将它们附加到meteor add webapp

  2. 移动应用可以通过在Javascript中实现来利用反应性。您可以直接从移动浏览器访问您的应用程序,也可以只使用PhoneGap / Cordova将其包装在" native" app容器。随着手机越来越受欢迎,这可能是部署应用程序的默认方式,而不是在不同的代码库中编写同一应用程序的许多副本。

答案 1 :(得分:3)

为了回答您的第一个问题,我发布了一个用于在Meteor 0.9+中编写REST API的软件包。移动应用程序当然可以使用API​​:

https://github.com/krose72205/meteor-restivus

它受到RestStop2的启发,并使用Iron Router的服务器端路由构建。

更新:我只想为找到此内容的任何人提供代码示例。这是GitHub自述文件中的Restivus Quick Start示例:

Items = new Mongo.Collection 'items'

if Meteor.isServer

  # Global API configuration
  Restivus.configure
    useAuth: true
    prettyJson: true

  # Generates: GET, POST, DELETE on /api/items and GET, PUT, DELETE on
  # /api/items/:id for Items collection
  Restivus.addCollection Items

  # Generates: GET, POST on /api/users and GET, DELETE /api/users/:id for
  # Meteor.users collection
  Restivus.addCollection Meteor.users,
    excludedEndpoints: ['deleteAll', 'put']
    routeOptions:
      authRequired: true
    endpoints:
      post:
        authRequired: false
      delete:
        roleRequired: 'admin'

  # Maps to: /api/posts/:id
  Restivus.addRoute 'posts/:id', authRequired: true,
    get: ->
      post = Posts.findOne @urlParams.id
      if post
        status: 'success', data: post
      else
        statusCode: 404
        body: status: 'fail', message: 'Post not found'
    post:
      roleRequired: ['author', 'admin']
      action: ->
        post = Posts.findOne @urlParams.id
        if post
          status: "success", data: post
        else
          statusCode: 400
          body: status: "fail", message: "Unable to add post"
    delete:
      roleRequired: 'admin'
      action: ->
        if Posts.remove @urlParams.id
          status: "success", data: message: "Item removed"
        else
          statusCode: 404
          body: status: "fail", message: "Item not found"

答案 2 :(得分:1)

要回答问题的移动部分,

Meteor将整合打包流程,通过使用Cordova将您的应用程序作为iOS / Android应用程序发布。您可能需要查看此视频:Meteor Devshop SF August 2014,它是现场演示中所述Meteor功能的演示。

确实,您永远不会接近原始应用程序的原始性能,但开发人员对项目所需的维护成本和技能组合也无法与之相媲美。

对于API部分,可以使用Meteor生成RESTful API。使用iron-router severside routing是一种可能的选择。

Discover Meteor Book完整版有一个额外章节专用于此。