我在Swift项目中创建了一个实用程序类来处理所有REST请求和响应.我已经构建了一个简单的REST API,因此我可以测试我的代码.我创建了一个需要返回NSArray的类方法,但由于API调用是异步的,我需要从异步调用中的方法返回.问题是异步返回void.如果我在Node中执行此操作,我会使用JS承诺,但我无法找到适用于Swift的解决方案.
import Foundation
class Bookshop {
class func getGenres() -> NSArray {
println("Hello inside getGenres")
let urlPath = "http://creative.coventry.ac.uk/~bookshop/v1.1/index.php/genre/list"
println(urlPath)
let url: NSURL = NSURL(string: urlPath)
let session = NSURLSession.sharedSession()
var resultsArray:NSArray!
let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
println("Task completed")
if(error) {
println(error.localizedDescription)
}
var err: NSError?
var options:NSJSONReadingOptions = NSJSONReadingOptions.MutableContainers
var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: options, error: &err) as NSDictionary
if(err != nil) {
println("JSON Error \(err!.localizedDescription)")
}
//NSLog("jsonResults %@", jsonResult)
let results: …Run Code Online (Sandbox Code Playgroud) 我使用故事板工具创建了一个简单的展开segue.我在要放松的视图中创建了以下事件处理程序:
-(IBAction)quitQuiz:(UIStoryboardSegue *)segue {
NSLog(@"SEGUE unwind");
}
Run Code Online (Sandbox Code Playgroud)
这会正确触发并解开segue(消息被记录).
当用户退出测验时,我想传回一些数据并且一直在努力解决这个问题.任何人都可以建议吗?
我有一个在NodeJS中开发的API,并通过.gitlab-ci.yml文件成功建立了持续集成.如果所有测试都在主分支上传递,则下一步是设置到Heroku的连续部署.
有很多关于Ruby和Python应用程序部署的教程,但NodeJS上没有任何内容.目前我的.gitlab-ci.yml文件看起来像这样:
image: node:latest
job1:
script: "ls -l"
test:
script: "npm install;npm test"
production:
type: deploy
script:
- npm install
- npm start
- gem install dpl
- dpl --provider=heroku --app=my-first-nodejs --api-key=XXXXXXXXXX
only:
- master
Run Code Online (Sandbox Code Playgroud)
Ruby和Python教程使用该dpl工具进行部署,但是如何在部署后在服务器上启动NodeJS脚本?
添加生产部分并推送它之后,测试运行并通过,但部署阶段卡在挂起状态.控制台是空白的.有没有人为NodeJS设置成功的CD脚本?
一直在尝试一个简单的异步测试.npm install -g jasmine-node然后安装了jasmine-node 编写了一个简单的模块并进行测试.
简单的模块.
// weather.js
exports.get = function(city, callback) {
callback(city);
};
Run Code Online (Sandbox Code Playgroud)
和测试套件.
// weather-spec.js
var list = require("../modules/weather");
describe("Weather Forecast", function(data) {
it('should get weather for London,UK', function() {
list.get('London,UK', function(data) {
expect(data).toEqual('London,UK');
done();
});
});
});
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Stacktrace:
ReferenceError: done is not defined
Run Code Online (Sandbox Code Playgroud)
鉴于这个简单的例子我无法看到我错在哪里.有人可以帮忙吗?
我正在使用 Dart Shelf 构建一个简单的 API。GET 请求工作正常,但我似乎无法访问 POST 请求的请求正文。
import 'dart:io' show InternetAddress;
import 'package:shelf/shelf.dart' show Request, Response;
import 'package:shelf/shelf_io.dart' show serve;
import 'package:shelf_router/shelf_router.dart' show Router;
void main() async {
Router router = Router();
router.get('/', (Request request) {
return Response.ok('this is the base URL');
});
router.post('/accounts', (Request request) async{
final body = await request.readAsString();
print(body);
return Response.ok(body);
});
final server = await serve(
router,
InternetAddress.anyIPv4,
8080,
);
print('Serving at http://${server.address.host}:${server.port}');
}
Run Code Online (Sandbox Code Playgroud)
当我发出请求时,我收到 200 OK 状态代码,但正文数据在哪里?
我习惯使用 NodeJS 和 Koa。我一直在使用 Deno 并运行了静态文件服务器的示例:
/* static_server.js */
import { Application } from 'https://deno.land/x/oak/mod.ts'
const port = 8080
const app = new Application()
// Error handler middleware
app.use(async (context, next) => {
try {
await next()
} catch (err) {
console.error(err)
}
})
// Send static content
app.use(async (context) => {
console.log(`${context.request.method} ${context.request.url.pathname}`)
await context.send({
root: `${Deno.cwd()}/static`,
index: "index.html",
})
})
await app.listen({ port })
Run Code Online (Sandbox Code Playgroud)
我还使用路由创建了一个动态服务器:
/* routes.js */
import { Application, Router } from 'https://deno.land/x/oak/mod.ts'
const port = …Run Code Online (Sandbox Code Playgroud) 我正在开发一些 Deno 项目,希望能够将 TypeScript 编译为 JavaScript 以在浏览器中运行(因为尚不支持 TS)。当我使用 NodeJS 时,我tsc使用 npm 安装了编译器,但仅仅为了访问tsc. Deno 有内置编译器吗?
我正在运行 Ubuntu 服务器。
我在学习 Deno 和 Oak 方面取得了缓慢但稳定的进展,但这让我感到困惑。我有一个带有文件上传字段的简单网络表单:
<form method="post" action="/quote" enctype="multipart/form-data">
<label>Author:
<input type="text" name="author" />
</label>
<label>file: <input type="file" name="myfile" multiple />
</label>
<label>Quote:
<textarea name="quote"></textarea>
</label>
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
处理是通过 Deno 和 Oak 完成的,下面是处理文本数据的脚本:
router.post('/quote', async context => {
const body = context.request.body({ type: 'form' })
const value = await body.value
const author = value.get('author')
console.log(author)
context.response.redirect(`/?author=${author}`)
})
Run Code Online (Sandbox Code Playgroud)
该路由可以处理没有编码的表单multipart/form-data,但一旦我添加该编码,该author字段就是undefined。
我的问题是:如何访问此表单中的数据(文本和文件数据)?
有没有办法查看小部件应用了什么样式?在网站开发中, Chrome 开发工具中的“样式”选项卡显示了应用的样式以及样式如何级联,这对于调试页面非常有用。
Flutter中有类似的功能吗?
这真让我讨厌.当我将UIImage转换为CIImage时,应用滤镜然后将图像上下颠倒(对于横向)或逆时针旋转90度(对于肖像).
var image:UIImage?
var index:Int?
@IBOutlet weak var photo: UIImageView!
@IBAction func editImage(sender: UIBarButtonItem) {
println("editImage")
let beginImage = CIImage(image: self.image)
let filter = CIFilter(name: "CISepiaTone")
filter.setValue(beginImage, forKey: kCIInputImageKey)
filter.setValue(0.8, forKey: kCIInputIntensityKey)
let newImage = UIImage(CIImage: filter.outputImage)
self.photo.image = newImage
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将一个非常简单的NodeJS应用程序部署到Heroku.
var http = require('http');
var server = http.createServer(function(req, res) {
res.writeHead(200);
res.end('Hello World');
}).listen(3000);
Run Code Online (Sandbox Code Playgroud)
我已在本地测试它并运行以下命令.
heroku login
heroku create marktyers
git push heroku master
heroku ps:scale web=1
Run Code Online (Sandbox Code Playgroud)
该应用似乎部署,但当我查看URL时,我得到一个应用程序错误.
https://marktyers.herokuapp.com
Run Code Online (Sandbox Code Playgroud)
这是heroku日志.
node server.js
heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path="/" host=marktyers.heroku
app.com request_id=d2ccf200-f034-4b62-951a-0a1d3055bf35 fwd="90.244.82.220" dyno= connect= service= status=503 bytes=
heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
heroku[web.1]: Stopping process with SIGKILL
heroku[web.1]: State changed from starting to crashed …Run Code Online (Sandbox Code Playgroud) 我在自定义类中有一个异步方法,它返回一个包含字典的NSArray.我试图在UITableView中显示这些数据.一个问题是getGenres方法调用是异步的,因此在显示表之后会加载数据.主要问题是弄清楚如何实现3种数据源方法.在Objective C中,这很简单......
var genreList:NSArray?
override func viewDidLoad() {
super.viewDidLoad()
Bookshop.getGenres {
genres in
self.genreList = genres // copies data to the public NSArray
self.tableView.reloadData() // this returns the data async so need to reload the tableview
println("records: \(self.genreList?.count)") // displays the array of dictionaries correctly
}
}
// #pragma mark - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView!) -> Int {
return 1
}
override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
if self.genreList != nil { …Run Code Online (Sandbox Code Playgroud) javascript ×5
ios ×4
node.js ×4
deno ×3
swift ×3
heroku ×2
oak ×2
api ×1
asynchronous ×1
ciimage ×1
core-image ×1
css-cascade ×1
dart ×1
deployment ×1
flutter ×1
forms ×1
gitlab ×1
http ×1
iphone ×1
jasmine-node ×1
json ×1
npm ×1
objective-c ×1
parsing ×1
post ×1
rest ×1
routes ×1
segue ×1
tableview ×1
typescript ×1
upload ×1
webserver ×1
widget ×1
xcode ×1