textlint/textlint: The pluggable natural language linter for text and markdown.
Ich werde versuchen, Anfragen mit API zu stellen.
Beachten Sie, dass ein Fehler auftritt, wenn der App-Ordner mit dem später zu installierenden Paketnamen übereinstimmt, z. B. "textlint".
app/
├ .textlintrc //Aufbau
├ app.js //Web-Haupt
└ a.py //Klient
Es ist angemessen, dass "--save" gut ist
$ npm init --yes
$ npm install --save-dev express
$ npm install --save-dev textlint
//Regeln zur Überprüfung von TODO
$ npm install --save-dev textlint-rule-no-todo
//Regeln zum Überprüfen aufeinanderfolgender Kanji
$ npm install --save-dev textlint-rule-max-kanji-continuous-len
Die aktuelle Version lautet wie folgt.
$ node --version
v10.21.0
$ npm --version
6.14.4
$ rpm list
[email protected]
[email protected]
[email protected]
[email protected]
app.js
const TextLintEngine = require('textlint').TextLintEngine;
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
//Magie, die json von Post-Daten analysiert
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
//Warten Sie an Port 8080
app.listen(8080, () => {
console.log('Running at Port 8080...');
});
app.post('/api/textlint', (req, res, next) => {
const req_text = req.body.text;
const engine = new TextLintEngine();
engine.executeOnText(req_text).then(results => {
res.json({
messages: results[0].messages
});
});
});
//404 Fehler für andere Anfragen
app.use((req, res) => {
res.sendStatus(404);
});
Informationen zum Schreiben finden Sie im Github jeder Regel
.textlintrc
{
"filters": {},
"rules": {
"no-todo": true,
"max-kanji-continuous-len": true,
}
}
Wenden Sie Flusen auf die Zeichenfolge der Textvariablen an
a.py
import json
import urllib.request
url = 'http://localhost:8080/api/textlint'
text = '''
TODO: this is TODO
1 2 3 4 5 6
'''.strip()
data = {"text": text}
headers = {
'Content-Type': 'application/json',
}
req = urllib.request.Request(url, json.dumps(data).encode(), headers)
try:
with urllib.request.urlopen(req) as res:
body = json.load(res)
json_str = json.dumps(body)
print(json_str)
except:
print("fail")
$ node app.js
Running at Port 8080...
$ python3 a.py | jq .
{
"messages": [
{
"type": "lint",
"ruleId": "no-todo",
"message": "Found TODO: 'TODO: this is TODO'",
"index": 0,
"line": 1,
"column": 1,
"severity": 2
},
{
"type": "lint",
"ruleId": "max-kanji-continuous-len",
"message": "6 oder mehr Kanji hintereinander:1 2 3 4 5 6",
"index": 19,
"line": 2,
"column": 1,
"severity": 2
}
]
}
Natürlich können Sie auch über die Kommandozeile anrufen
$ curl -X POST -H "Content-Type: application/json" \
-d '{"text":"TODO: this is TODO\n 1 2 3 4 5 6"}' \
localhost:8080/api/textlint | jq .
{
"messages": [
{
"type": "lint",
"ruleId": "no-todo",
"message": "Found TODO: 'TODO: this is TODO'",
"index": 0,
"line": 1,
"column": 1,
"severity": 2
},
{
"type": "lint",
"ruleId": "max-kanji-continuous-len",
"message": "6 oder mehr Kanji hintereinander:1 2 3 4 5 6",
"index": 19,
"line": 2,
"column": 1,
"severity": 2
}
]
}
Erstellen eines lokalen Servers mit Node \ .js und Express \ (1 ) ―Einführung von Node \ .js und npm― \ -Qiita Textlint über Code \ -Qiita ausführen Textlint in NodeJS / Express-Umgebung ausführen [Das Ausführungsergebnis von node \ .js \ -Textlint ist leer \ -Stack-Überlauf](https://ja.stackoverflow.com/questions/60015/textlint-%E3%81%AE%E5%AE%9F % E8% A1% 8C% E7% B5% 90% E6% 9E% 9C% E3% 81% 8C% E7% A9% BA% E3% 81% AB% E3% 81% AA% E3% 82% 8B / 70543 ) Fragen Sie nach der Web-API, nachdem Sie POST-Daten mit Node \ .js \ + Express \ -Qiita erhalten haben Grundlegendes zum body \ -parser des Knotens \ .js \ (express ) \ -Qiita
Recommended Posts