21 week4 submit buidAndRun() node-rest-client
、
我们想实现一个提交代码的功能 这个功能有nodeserver 传到后边的server 验证 在返回给nodeserver
我们稍微修改一下ui
ATOM修改文件权限不够 用下面命令


我们

Controller

然后我们在restEditor的时候 删除编译的结果和运行的结果


OK
下面我们来完成这个绿色的提交按钮
我们希望用户点击提交按钮后触发一个事件,用户的代码(string)可以通过HTTP request或者RESTFUL api 调用与后端进行通信
和之前 getproblem或者addproblem一样 我们在dataservice中去实现
首先在editor中进行调用
绿色按钮和这个歌submit方法绑定
我们来调用方法 然后去dataservice中实现
对于用户代码我们有2个需要关心的一个是代码内容(string),另外一个叫language具体是那个语言



下面就是具体实现dataservice中的 buildAndRun()了

这只是调用 还没实现
现在去node server端去实现对应的实现
因为我们调用的api是 v1下的
所以我们去到

添加一下


然后我们去editor看看
我们发现 原来 我们没有注入dataservice

加上

刷新

发现res

说明调通了
我们知道实际上代码的运行和编译时是在更后边的server
我们的node server 只是起到一个转发请求的作用
说白了就是代client端发req 给我们真正要执行运行编译代码的server
那么如何实现呢
这里要引用一个包
谷歌
npm node-rest-client

npm官网又那个2个使用方法
//Example POST method invocation
var Client = require('node-rest-client').Client; var client = new Client(); // set content-type header and data as json in args parameter
var args = {
data: { test: "hello" },
headers: { "Content-Type": "application/json" }
}; client.post("http://remote.site/rest/xml/method", args, function (data, response) {
// parsed response body as js object
console.log(data);
// raw response
console.log(response);
});
// registering remote methods
client.registerMethod("postMethod", "http://remote.site/rest/json/method", "POST"); client.methods.postMethod(args, function (data, response) {
// parsed response body as js object
console.log(data);
// raw response
console.log(response);
});
POST method invocation
引入这个类
创建一个client

1注册使用

使用
2,不注册使用 直接用

我们先来安装这个lib

我们还是在rest .js
引用

这样 下面就可以做远程的rest调用了

这里是5000端口







现在我们把og-client连通og-server
og-server又使用了node-rest-client
能调用executor_server(localhost:5000)的api
response返回给dataservice
editor调用dataservice拿到结果
下面就是执行端executor_server
使用python做execution service
为何用python呢?因为他的库强大(支持docker) 使用方便
然后 轻量(Flask)
week4下新建文件存放 executor service

安装python的一个包管理器 pip
21 week4 submit buidAndRun() node-rest-client的更多相关文章
- 《Node.js核心技术教程》学习笔记
<Node.js核心技术教程>TOC \o "1-3" \h \z \u 1.章模块化编程 2019.2.19 13:30' PAGEREF _101 \h 1 08D ...
- 我用的一些Node.js开发工具、开发包、框架等总结
开发工具 1.WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢. 2.做些小型项目用Sublime Text. 3.Browser ...
- Node.js开发工具、开发包、框架等总结
开发工具 1.WebStorm,毫无疑问非他莫属,跨平台,强大的代码提示,支持Nodejs调试,此外还支持vi编辑模式,这点我很喜欢.2.做些小型项目用Sublime Text.3.Browserif ...
- spark on yarn,client模式时,执行spark-submit命令后命令行日志和YARN AM日志
[root@linux-node1 bin]# ./spark-submit \> --class com.kou.List2Hive \> --master yarn \> --d ...
- faster-rcnn错误信息 : tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shapes of both tensors to match. lhs shape= [21] rhs shape= [2]
faster-rcnn错误信息 : tensorflow.python.framework.errors_impl.InvalidArgumentError: Assign requires shap ...
- k8s1.11.0安装、一个master、一个node、查看node名称是主机名、node是扩容进来的、带cadvisor监控服务
一个master.一个node.查看node节点是主机名 # 安装顺序:先在test1 上安装完必要组件后,就开始在 test2 上单独安装node组件,实现node功能,再返回来配置test1加入集 ...
- Windbg调优Kafka.Client内存泄露
从来没写过Blog,想想也是,工作十多年了,搞过N多的架构.技术,不与大家分享实在是可惜了.另外,从传统地ERP行业转到互联网,也遇到了很所前所未有的问题,原来知道有一些坑,但是不知道坑太多太深.借着 ...
- [译]简单得不得了的教程-一步一步用 NODE.JS, EXPRESS, JADE, MONGODB 搭建一个网站
原文: http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/ 原文的源代码在此 太多的教程教你些一个Hello, World!了, ...
- [Node.js] Node + Redis 实现分布式Session方案
原文地址: http://www.moye.me/?p=565 Session是什么? Session 是面向连接的状态信息,是对 Http 无状态协议的补充. Session 怎么工作? Sessi ...
随机推荐
- golang 入门之struct继承,嵌套
package main import "fmt" type Jocongmin struct{ Name string Home string Want string } fun ...
- jmeter分布式压力测试实践+登录为例
1.一张分布式压力的图解,如下 准备: 1.两台slave 2.一个master 3.待测目标地址 http://XXX 准备环境:linux环境,master如果可以最好有可视化电脑界面,便于jmx ...
- Windows如何后台运行bat文件(没有命令提示符框)
怎么让bat文件在后台无声无息无影无形地运行呢? 用start/min命令去运行bat文件,电脑的任务栏下仍然会有相关的图标,以下的办法可以达到目的. 方法一: bat里有隐藏窗口的命令,很简单,只需 ...
- spring 之 factory-bean & factory-method
这两者常常是一起出现的,或者说他们经常是一起被使用的.但是其实是分为了两种情况: 1 同时使用factory-bean 和 factory-method 如果,我们在一个bean 元素上同时配置 fa ...
- zookeeper(3) zookeeper的实践及原理
一.基于java API初探zookeeper的使用 (1)建立连接 public static void main(String[] args) { //NOT_CONNECTED-->CON ...
- leetcode218
from heapq import * class Solution: def getSkyline(self, LRH): skyline = [] i, n = 0, len(LRH) liveH ...
- 没有cv2.so文件
最近发现opencv安装的有问题,发现少了cv2.so文件,这个文件是给python的调度包. 查来查去,发现cmake的时候有这个: -- Found PythonInterp: /usr/bin/ ...
- sizeof 空类
C++标准规定类的大小不为0,空类的大小为1,当类不包含虚函数和非静态数据成员时,其对象大小也为1. 如果在类中声明了虚函数(不管是1个还是多个),那么在实例化对象时,编译器会自动在对象里安插一个指针 ...
- 关于 C++ 默认构造函数 的几个误区 转载
https://blog.csdn.net/ccrazyman/article/details/8138425
- python字符串查找
a = "string test" a.index("g") a.find("g")