React 中 调用 Asp.net WebApi

1、安装node 相关包

npm install --save react react-dom superagent

2、安装gulp相关包

npm install --save gulp-browserify gulp reactify gulp-connect

3、编写gulpfile.js 构建React文件

var gulp = require('gulp'),
    browserify = require('gulp-browserify'),
    reactify = require('reactify'),
    connect = require('gulp-connect');


gulp.task('build', function() {
    gulp.src('index.js').
    pipe(browserify({
            transform: ['reactify']
        }))
        .pipe(gulp.dest('build.js'))
})

gulp.task('connect', function() {
    connect.server({
        port: 3000,
        livereload: true
    })
})

gulp.task('html', function() {
    gulp.src('*.html')
        .pipe(connect.reload())
})
gulp.task('js',['build'], function() {

    gulp.src('*.js')
        .pipe(connect.reload())
})

gulp.task('watch', function() {
    gulp.watch('*.html', ['html'])
    gulp.watch('*.js', ['js'])
})

gulp.task('default', ['build', 'watch', 'connect'])

4、编写request请求

  1、新增常量文件 constants.js 用来存放 request 请求中 Basic 认证的用户名  密码

  

module.exports={
    uname:'123',
    pwd:'123'
}

   2、新增调用 API 文件  api.js

var request = require('superagent');
var constants = require('./constants.js');


module.exports = {
    Get: function(callback) {
        request
            .get('http://localhost:53691/api/value')
            .auth(constants.uname, constants.pwd)
            .end(function(err, res) {
                if(err){
                    alert(err);
                }
                callback(res.body);
            });
    }
}

5、新增index.js 

var React=require('react'),
    ReactDOM=require('react-dom'),
    API=require('./Api.js');



var ItemList=React.createClass({
    getInitialState:function(){
        return {
            Users:[]
        }
    },
    componentWillMount:function(){
        var users=API.Get(function(users){
            this.setState({
                Users: users
            })
        }.bind(this));
        
    },
    render:function(){
        var users=this.state.Users;
         if(Array.isArray(users)==false)throw new Error('users is not array')
        var lists=users.map(function(item){
            return <li key={item.ID}>{item.ID}:{item.Name}</li>
        })
        return (
            <ul>
                {lists}
            </ul>
        )
    }
});


ReactDOM.render(<ItemList />,document.getElementById('app'))

6、新增index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <h1>SuperAgent!</h1>
    <div id="app"></div>
    <script src="build.js/index.js"></script>
</body>
</html>

 

WebApi源码

posted @ 2015-11-20 15:09  anhuisunfei  阅读(4818)  评论(0编辑  收藏  举报