Node.jsアプリケーションでYelpへのAPI呼び出しをしようとしています。 Yelp APIを使用できるようにするために、このコードを使用する必要があることがわかりました。https://arian.io/how-to-use-yelps-api-with-node/私はapp.jsファイルでそのコードを使用しました。今度は結果をブラウザに表示するために、コントローラをビュー(私の場合はindex.html)に接続し、2つのファイルを$ scopeでバインドする必要があることを知っています。しかし、私は何とかコントローラーをapp.jsに接続する必要があります。私はarian.ioに続くチュートリアルは言った:あなたは、関数request_yelp(パラメータ、コールバック)を呼び出した場合Node.js/Express/AngularアプリケーションのYelpへの外部API呼び出しの作成方法
は、今では、コールバック(エラー、レスポンス、ボディ)、これらの引数にコールバックを呼び出します。 これで、YelpのAPIを最大限に活用できるようになりました。
ただし、どのようにしてその関数を呼び出しますか?私は私のコントローラでそれをやっていると仮定しますが、私はそれを試みましたが、動作しませんでした。
私の問題を要約すると、APIコールが正しい場合には、それはどこにあるのですか?次のステップはコントローラとリンクすることです。これら2つが接続されると、htmlをapiController.jsデータの結果をブラウザに表示するには、$ scopeを使用してください。私はたくさんのことを逃していることを知っていますが、私は正しいアイデアを持っていると思います。
助けを歓迎します。ありがとう!
My app's tree
>.git
>bower_components
>client
>controllers
-apiControllers (My one and only controller)
>css
>views (This is empty)
app.js
index.html (This is my one and only page/ my app is a one page app)
package.json
>models
>node_modules
app.js (This is where I am trying to make the API call)
<-- ================================================== -->
//This is my app.js file
//Call packages needed
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var dotenv = require('dotenv').config();
var oauthSignature = require('oauth-signature');
var n = require('nonce')();
var request = require('request');
var qs = require('querystring');
var _ = require('lodash');
// Function for yelp call
var request_yelp = function(set_parameters, callback) {
var httpMethod = 'GET';
var url = 'http://api.yelp.com/v2/search';
var default_parameters = {
location: 'New+York',
sort: '2'
};
var required_parameters = {
oauth_consumer_key : process.env.yelp_consumer_key,
oauth_token : process.env.yelp_token,
oauth_nonce : n(),
oauth_timestamp : n().toString().substr(0,10),
oauth_signature_method : 'HMAC-SHA1',
oauth_version : '1.0'
};
var parameters = _.assign(default_parameters, set_parameters, required_parameters);
var consumerSecret = process.env.yelp_consumer_secret;
var tokenSecret = process.env.yelp_token_secret;
var signature = oauthSignature.generate(httpMethod, url, parameters, consumerSecret, tokenSecret, { encodeSignature: false});
parameters.oauth_signature = signature;
var paramURL = qs.stringify(parameters);
var apiURL = url+'?'+paramURL;
request(apiURL, function(error, response, body){
return callback(error, response, body);
});
};
app.use(express.static(__dirname+'/client'));
app.get('/', function request_yelp(params, callback){
res.send('This is the main page');
});
app.listen(3000);
console.log('Running on port 3000');
<-- ================================================== -->
<!-- This is index.html. Here I would like to display my YELP responses. I am using Bootstrap
<div class="container-fluid">
<div class="row-fluid">
<!-- <div class="container-fluid"> -->
<!-- <div class="jumbotron"> -->
<div class="row-fluid">
<!-- <div ng-controller="MainCtrl"> -->
<p><date-input name="info.name" message="info.message"></date-input></p>
<div data-ng-repeat="business in businesses">
<!-- <div class="col-lg-offset-1"> -->
<div class="col-lg-2 col-lg-offset-2 col-md-3 col-sm-2 col-xs-6 text-center">
<p>Breakfast</p>
<div class="thumbnail">
<img class="img-responsive img-circle" src="{{business.image_url}}">
<h5>{{business.name}}</h5>
<h5>{{business.rating}}</h5>
<h5>"{{business.snippet_text}}"</h5>
<h5>{{business.categories[0]}}</h5>
<p><a class="btn btn-link btn-sm" href="{{business.url}}">View details »</a></p>
<p><a class="btn btn-xs btn-info" id="breakfast" role="button" onClick="refreshPage()">I don't like this one!</a></p>
</div><!-- End thumbnail -->
</div><!-- End col-md-4 -->
<-- ================================================== -->
// Finally this is my apiController.js. What code do I need here to connect the API call to my view?
var myApp = angular.module('myApp', []);
myApp.controller('MainCtrl', ['$scope'function($scope) {
$scope.total = [];
$scope.businesses = [];
}])
ダニエルありがとう、これは多くの助けになりました。 – ksan